package com.gitee.blogcase.gracepaycase.container;

import com.gitee.blogcase.gracepaycase.service.PayService;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 支付bean容器
 *
 * @author wentao.wu
 * @date 2022/01/05
 */
@Component
public class PayBeanContainer {
    /**
     * bean管理器
     */
    public Map<String, PayService> CONTAINER = new HashMap<>(16);

    /**
     * 添加bean
     *
     * @param mode 支付方式
     * @param bean Bean
     */
    public void addBean(String mode, PayService bean) {
        if (checkBean(mode)) {
            throw new RuntimeException("已存在该业务规则!");
        }
        CONTAINER.put(mode, bean);
    }

    /**
     * 获取Bean
     *
     * @param mode 支付方式
     * @return {@link PayService}
     */
    public PayService getBean(String mode) {
        if (!checkBean(mode)) {
            throw new RuntimeException("不存在该Bean!");
        }
        return CONTAINER.get(mode);
    }

    /**
     * 检查Bean是否存在
     *
     * @param mode 支付方式
     * @return boolean
     */
    public boolean checkBean(String mode) {
        return CONTAINER.containsKey(mode);
    }

}
